#pragma once 

typedef int DataType;

typedef struct SHListNode
{
    DataType data;
    struct SHListNode* next;
}Node;

//初始化
void SHListInit(Node** head);


//尾插
void SHListPushBack(Node* head, DataType data);


//尾删
void SHListPopBack(Node* head);


//头插
void SHListPushFront(Node* head, DataType data);


//头删
void SHListPopFront(Node* head);


//任意位置的插入
void SHListInsert(Node* pos, DataType data);


//任意位置的删除
void SHListErase(Node* pos);


//获得有效元素的大小，遍历
int SHListSize(Node* head);


//查找，注意返回的是节点
Node* SHListFind(Node* head, DataType data);


//销毁，必须传二级指针
void SHListDestroy(Node** head);


//测试
void SHListPrint(Node* head);



